package gui.curso;

import java.awt.Color;
import java.awt.Component;
import java.awt.Font;
import java.awt.Rectangle;
import java.util.ArrayList;
import java.util.Calendar;
import java.util.Date;
import java.util.GregorianCalendar;
import java.util.HashMap;
import java.util.Map;
import java.util.TreeMap;

import javax.swing.BorderFactory;
import javax.swing.ButtonGroup;
import javax.swing.ImageIcon;
import javax.swing.JButton;
import javax.swing.JLabel;
import javax.swing.JOptionPane;
import javax.swing.JPanel;
import javax.swing.JRadioButton;
import javax.swing.JSpinner;
import javax.swing.JTabbedPane;
import javax.swing.JTextArea;
import javax.swing.JTextField;
import javax.swing.JToggleButton;
import javax.swing.SpinnerDateModel;
import javax.swing.border.TitledBorder;

import manejador.ManejadorDeCurso;
import manejador.ManejadorDeHorario;
import modelo.ModeloAula;
import modelo.ModeloCiclo;
import modelo.ModeloCurso;
import modelo.ModeloProfesor;
import utils.Days;
import utils.MotorHorario;
import utils.Utilidad;
import entidad.Curso;
import entidad.Horario;
import gui.aula.DialogoAgregarAula;
import gui.ciclo.DialogoAgregarCiclo;
import gui.empleado.DialogoAgregarEmpleado;

public class PanelAgregarCurso extends JPanel {

	private static final long serialVersionUID = 1L;

	private JPanel panelAgregarCurso = null;
	private JButton btnAceptar = null;
	private JLabel lblNombre = null;
	private JTextField txtNombre = null;
	private JLabel lblDescripcion = null;
	private JTextArea txtDescripcion = null;
	private JLabel lblProfesor = null;
	public static JTextField txtNombreProfesor = null;
	private JButton btnBuscarProfesor = null;
	private JLabel lblAula = null;
	private Utilidad utilidad = null; // @jve:decl-index=0:
	private JRadioButton rbtnActivo = null;
	private JRadioButton rbtnInactivo = null;
	private ButtonGroup grupoBotonesEstatus = null; // @jve:decl-index=0:
	private static String nombreCompletoProfesor = null;
	private static int idProfesor = 0;
	private ModeloCurso modeloCurso = null;
	private JTabbedPane tabCurso = null;
	private JPanel panelHorario = null;
	private JToggleButton btnLunes = null;
	private JToggleButton btnMartes = null;
	private JToggleButton btnMiercoles = null;
	private JToggleButton btnJueves = null;
	private JToggleButton btnViernes = null;
	private JToggleButton btnSabado = null;
	private JToggleButton btnDomingo = null;
	private JLabel lblFechaInicio = null;
	private JLabel lblFechaFin = null;
	private JPanel panelLunes = null;
	private JSpinner dateInicioLunes = null;
	private JSpinner dateFinLunes = null;
	private JPanel panelMartes = null;
	private JSpinner dateInicioMartes = null;
	private JSpinner dateFinMartes = null;
	private JPanel panelMiercoles = null;
	private JSpinner dateInicioMiercoles = null;
	private JSpinner dateFinMiercoles = null;
	private JPanel panelJueves = null;
	private JSpinner dateInicioJueves = null;
	private JSpinner dateFinJueves = null;
	private JPanel panelViernes = null;
	private JSpinner dateInicioViernes = null;
	private JSpinner dateFinViernes = null;
	private JPanel panelSabado = null;
	private JSpinner dateInicioSabado = null;
	private JSpinner dateFinSabado = null;
	private JPanel panelDomingo = null;
	private JSpinner dateInicioDomingo = null;
	private JSpinner dateFinDomingo = null;
	private JButton btnAgregarProfesor = null;
	private Calendar calInicio = null; // @jve:decl-index=0:
	private Calendar calFin = null;// @jve:decl-index=0:
	private Map<String, Map<String, String>> mapHorario = null; // @jve:decl-index=0:
	private Map<String, String> mapHora = null; // @jve:decl-index=0:
	private JLabel lblCiclo = null;
	public static JTextField txtNombreCiclo = null;
	private JButton btnCiclo = null;
	private static int idCiclo = 0;
	private JLabel lblAula1 = null;

	public static JTextField txtAula = null;
	private static int idAula = 0;
	private JButton btnAula = null;

	private JButton btnAgregarCiclo = null;

	private JButton btnAgregarAula = null;

	/**
	 * This method initializes this
	 * 
	 * @return void
	 */
	public PanelAgregarCurso() {
		super();
		initialize();
	}

	private void initialize() {
		this.calInicio = new GregorianCalendar();
		this.calInicio.set(Calendar.HOUR_OF_DAY, 8);
		this.calInicio.set(Calendar.MINUTE, 0);
		this.calFin = new GregorianCalendar();
		this.calFin.set(Calendar.HOUR_OF_DAY, 13);
		this.calFin.set(Calendar.MINUTE, 0);
		this.modeloCurso = ModeloCurso.getInstancia();
		this.grupoBotonesEstatus = new ButtonGroup();
		this.utilidad = Utilidad.getInstancia();
		utilidad.formatearCampos(txtNombre, txtDescripcion, txtNombreProfesor);
		this.setSize(510, 424);
		this.setLayout(null);

		this.add(getBtnAceptar(), null);
		this.add(getPanelAgregarCurso(), null);
		this.add(getTabCurso(), null);
	}

	/**
	 * This method initializes panelAgregarCurso
	 * 
	 * @return javax.swing.JPanel
	 */
	private JPanel getPanelAgregarCurso() {
		if (panelAgregarCurso == null) {
			lblAula1 = new JLabel();
			lblAula1.setBounds(new Rectangle(12, 245, 78, 23));
			lblAula1.setText("Aula");
			lblCiclo = new JLabel();
			lblCiclo.setBounds(new Rectangle(12, 204, 78, 23));
			lblCiclo.setText("Ciclo:");
			lblAula = new JLabel();
			lblAula.setBounds(new Rectangle(14, 286, 78, 23));
			lblAula.setText("Estatus:");
			lblProfesor = new JLabel();
			lblProfesor.setBounds(new Rectangle(12, 166, 78, 23));
			lblProfesor.setText("Profesor:");
			lblDescripcion = new JLabel();
			lblDescripcion.setBounds(new Rectangle(12, 73, 78, 23));
			lblDescripcion.setText("Descripcion:");
			lblNombre = new JLabel();
			lblNombre.setBounds(new Rectangle(12, 29, 78, 23));
			lblNombre.setText("Nombre:");
			panelAgregarCurso = new JPanel();
			panelAgregarCurso.setLayout(null);
			panelAgregarCurso.setBorder(BorderFactory.createTitledBorder(
					BorderFactory.createLineBorder(Color.gray, 1),
					"Datos del Curso", TitledBorder.DEFAULT_JUSTIFICATION,
					TitledBorder.DEFAULT_POSITION, new Font("Dialog",
							Font.BOLD, 12), new Color(51, 51, 51)));
			panelAgregarCurso.setBounds(new Rectangle(8, 11, 401, 267));
			panelAgregarCurso.add(lblNombre, null);
			panelAgregarCurso.add(getTxtNombre(), null);
			panelAgregarCurso.add(lblDescripcion, null);
			panelAgregarCurso.add(getTxtDescripcion(), null);
			panelAgregarCurso.add(lblProfesor, null);
			panelAgregarCurso.add(getTxtNombreProfesor(), null);
			panelAgregarCurso.add(getBtnBuscarProfesor(), null);
			panelAgregarCurso.add(lblAula, null);
			panelAgregarCurso.add(getRbtnActivo(), null);
			panelAgregarCurso.add(getRbtnInactivo(), null);
			panelAgregarCurso.add(getBtnAgregarProfesor(), null);
			panelAgregarCurso.add(lblCiclo, null);
			panelAgregarCurso.add(getTxtNombreCiclo(), null);
			panelAgregarCurso.add(getBtnCiclo(), null);
			panelAgregarCurso.add(lblAula1, null);
			panelAgregarCurso.add(getTxtAula(), null);
			panelAgregarCurso.add(getBtnAula(), null);
			panelAgregarCurso.add(getBtnAgregarCiclo(), null);
			panelAgregarCurso.add(getBtnAgregarAula(), null);
		}
		return panelAgregarCurso;
	}

	/**
	 * This method initializes btnAceptar
	 * 
	 * @return javax.swing.JButton
	 */
	private JButton getBtnAceptar() {
		if (btnAceptar == null) {
			btnAceptar = new JButton();
			btnAceptar.setText("Aceptar");
			btnAceptar.setBounds(new Rectangle(113, 385, 79, 26));
			btnAceptar.addActionListener(new java.awt.event.ActionListener() {
				@SuppressWarnings("static-access")
				public void actionPerformed(java.awt.event.ActionEvent e) {
					mapHorario = new TreeMap<String, Map<String, String>>();
					mapHora = new HashMap<String, String>();
					ArrayList<Horario> horarios = new ArrayList<Horario>();
					ArrayList<String> horas = new ArrayList<String>();
					for (Component component : PanelAgregarCurso.this
							.getPanelHorario().getComponents()) {
						if (component instanceof JPanel) {
							if (((JPanel) (component)).isVisible()) {
								for (Component childComponents : ((JPanel) (component))
										.getComponents()) {
									if (childComponents instanceof JSpinner) {
										horas
												.add(((JSpinner) (childComponents))
														.getModel().getValue()
														.toString());
									}
								}
							}
						}
					}

					for (String dia : Days.getDias()) {
						String horaInicio = horas.get(0).split(" ")[3]
								.split(":")[0].concat(":".concat(horas.get(0)
								.split(" ")[3].split(":")[1]));
						String horaFin = horas.get(1).split(" ")[3].split(":")[0]
								.concat(":".concat(horas.get(1).split(" ")[3]
										.split(":")[1]));
						mapHora.put(horaInicio, horaFin);
						mapHorario.put(dia, mapHora);
					}

					if (utilidad.validar(txtNombre, txtDescripcion,
							txtNombreProfesor) == false
							|| rbtnActivo.isSelected() == false
							&& rbtnInactivo.isSelected() == false) {
						JOptionPane.showMessageDialog(null,
								"Faltan Campos por Llenar", "Error",
								JOptionPane.ERROR_MESSAGE);
					} else {
						for (String key : mapHorario.keySet()) {
							System.out.println("LLEGUE A AKI 1");
							Map.Entry<String, String> hora = mapHorario
									.get(key).entrySet().iterator().next();
							Horario horario = new Horario(0, key,
									hora.getKey(), hora.getValue(), idAula);
							if (MotorHorario.getInstancia()
									.isHorarioDisponiblePorAula(horario) == false
									|| MotorHorario.getInstancia()
											.isHorarioDisponiblePorProfesor(
													PanelAgregarCurso.this
															.getIdProfesor(),
													horario) == false) {
								return;
							} else {
								System.out.println("LLEGUE A AKI 4");
								horarios.add(horario);
							}
						}
						String estatus = rbtnActivo.isSelected() ? "ACTIVO"
								: "INACTIVO";
						Curso curso = new Curso(0, txtNombre.getText(),
								txtDescripcion.getText(), idProfesor, estatus,
								idCiclo);
						curso = (Curso) utilidad.convertirAMayuscula(curso);
						modeloCurso.agregar(curso);
						JOptionPane.showMessageDialog(null,
								"Curso agregado con exito", "Confirmacion",
								JOptionPane.INFORMATION_MESSAGE);

						for (Horario horario : horarios) {
							ManejadorDeHorario.getInstancia().agregar(horario);
						}
						ManejadorDeHorario.getInstancia().agregarHorarioYCurso(
								horarios.size(),
								ManejadorDeCurso.getInstancia()
										.getUltimpoCurso().getIdCurso());
						utilidad.limpiar(txtNombre, txtDescripcion,
								txtNombreProfesor, grupoBotonesEstatus,
								txtAula, txtNombreCiclo);

					}
				}
			});
		}
		return btnAceptar;
	}

	/**
	 * This method initializes txtNombre
	 * 
	 * @return javax.swing.JTextField
	 */
	private JTextField getTxtNombre() {
		if (txtNombre == null) {
			txtNombre = new JTextField();
			txtNombre.setBounds(new Rectangle(103, 28, 171, 23));
		}
		return txtNombre;
	}

	/**
	 * This method initializes txtDescripcion
	 * 
	 * @return javax.swing.JTextArea
	 */
	private JTextArea getTxtDescripcion() {
		if (txtDescripcion == null) {
			txtDescripcion = new JTextArea();
			txtDescripcion.setBounds(new Rectangle(103, 73, 221, 78));
		}
		return txtDescripcion;
	}

	/**
	 * This method initializes txtNombreProfesor
	 * 
	 * @return javax.swing.JTextField
	 */
	private static JTextField getTxtNombreProfesor() {
		if (txtNombreProfesor == null) {
			txtNombreProfesor = new JTextField();
			txtNombreProfesor.setBounds(new Rectangle(103, 166, 171, 23));
			txtNombreProfesor.setEnabled(false);

		}
		return txtNombreProfesor;
	}

	/**
	 * This method initializes btnBuscarProfesor
	 * 
	 * @return javax.swing.JButton
	 */
	private JButton getBtnBuscarProfesor() {
		if (btnBuscarProfesor == null) {
			btnBuscarProfesor = new JButton();
			btnBuscarProfesor.setBounds(new Rectangle(282, 166, 96, 23));
			btnBuscarProfesor.setText("Buscar");
			btnBuscarProfesor.setIcon(new ImageIcon("./lib/images/search.gif"));
			btnBuscarProfesor
					.addActionListener(new java.awt.event.ActionListener() {
						public void actionPerformed(java.awt.event.ActionEvent e) {
							DialogoProfesoresActivos dialogoProfesoresActivos = DialogoProfesoresActivos
									.getInstancia();
							ModeloProfesor modeloProfesor = ModeloProfesor
									.getInstancia();
							modeloProfesor.actualizarTabla();
							DialogoProfesoresActivos.setAccion("Agregar");
							dialogoProfesoresActivos.setVisible(true);
							dialogoProfesoresActivos = null;
							modeloProfesor = null;
						}
					});
		}
		return btnBuscarProfesor;
	}

	/**
	 * This method initializes rbtnActivo
	 * 
	 * @return javax.swing.JRadioButton
	 */
	private JRadioButton getRbtnActivo() {
		if (rbtnActivo == null) {
			rbtnActivo = new JRadioButton();
			rbtnActivo.setBounds(new Rectangle(105, 287, 68, 19));
			rbtnActivo.setText("Activo");
			grupoBotonesEstatus.add(rbtnActivo);
		}
		return rbtnActivo;
	}

	/**
	 * This method initializes rbtnInactivo
	 * 
	 * @return javax.swing.JRadioButton
	 */
	private JRadioButton getRbtnInactivo() {
		if (rbtnInactivo == null) {
			rbtnInactivo = new JRadioButton();
			rbtnInactivo.setBounds(new Rectangle(175, 287, 85, 19));
			rbtnInactivo.setText("Inactivo");
			grupoBotonesEstatus.add(rbtnInactivo);
		}
		return rbtnInactivo;
	}

	public static String getNombreCompletoProfesor() {
		return nombreCompletoProfesor;
	}

	public static void setNombreCompletoProfesor(String nombreCompletoProfesor) {
		PanelAgregarCurso.nombreCompletoProfesor = nombreCompletoProfesor;
	}

	public static int getIdProfesor() {
		return idProfesor;
	}

	public static void setIdProfesor(int idProfesor) {
		PanelAgregarCurso.idProfesor = idProfesor;
	}

	/**
	 * This method initializes tabCurso
	 * 
	 * @return javax.swing.JTabbedPane
	 */
	private JTabbedPane getTabCurso() {
		if (tabCurso == null) {
			tabCurso = new JTabbedPane();
			tabCurso.setBounds(new Rectangle(2, 4, 499, 365));
			tabCurso.addTab("Curso", null, getPanelAgregarCurso(), null);
			tabCurso.addTab("Horario", null, getPanelHorario(), null);
		}
		return tabCurso;
	}

	/**
	 * This method initializes panelHorario
	 * 
	 * @return javax.swing.JPanel
	 */
	private JPanel getPanelHorario() {
		if (panelHorario == null) {
			lblFechaFin = new JLabel();
			lblFechaFin.setBounds(new Rectangle(289, 2, 58, 24));
			lblFechaFin.setText("Hora Fin");
			lblFechaInicio = new JLabel();
			lblFechaInicio.setBounds(new Rectangle(164, 2, 74, 24));
			lblFechaInicio.setText("Hora Inicio");
			panelHorario = new JPanel();
			panelHorario.setLayout(null);
			panelHorario.add(getBtnLunes(), null);
			panelHorario.add(getBtnMartes(), null);
			panelHorario.add(getBtnMiercoles(), null);
			panelHorario.add(getBtnJueves(), null);
			panelHorario.add(getBtnViernes(), null);
			panelHorario.add(getBtnSabado(), null);
			panelHorario.add(getBtnDomingo(), null);
			panelHorario.add(lblFechaInicio, null);
			panelHorario.add(lblFechaFin, null);
			panelHorario.add(getPanelLunes(), null);
			panelHorario.add(getPanelMartes(), null);
			panelHorario.add(getPanelMiercoles(), null);
			panelHorario.add(getPanelJueves(), null);
			panelHorario.add(getPanelViernes(), null);
			panelHorario.add(getPanelSabado(), null);
			panelHorario.add(getPanelDomingo(), null);
		}
		return panelHorario;
	}

	/**
	 * This method initializes btnLunes
	 * 
	 * @return javax.swing.JToggleButton
	 */
	private JToggleButton getBtnLunes() {
		if (btnLunes == null) {
			btnLunes = new JToggleButton();
			btnLunes.setBounds(new Rectangle(9, 27, 98, 29));
			btnLunes.setText("Lunes");
			btnLunes.addItemListener(new java.awt.event.ItemListener() {
				public void itemStateChanged(java.awt.event.ItemEvent e) {
					if (btnLunes.isSelected()) {
						PanelAgregarCurso.this.getPanelLunes().setVisible(true);
					} else {
						PanelAgregarCurso.this.getPanelLunes()
								.setVisible(false);
					}
					Days.LUNES.addDias();
				}
			});
		}
		return btnLunes;
	}

	/**
	 * This method initializes btnMartes
	 * 
	 * @return javax.swing.JToggleButton
	 */
	private JToggleButton getBtnMartes() {
		if (btnMartes == null) {
			btnMartes = new JToggleButton();
			btnMartes.setBounds(new Rectangle(9, 60, 98, 29));
			btnMartes.setText("Martes");
			btnMartes.addItemListener(new java.awt.event.ItemListener() {
				public void itemStateChanged(java.awt.event.ItemEvent e) {
					if (btnMartes.isSelected()) {
						PanelAgregarCurso.this.getPanelMartes()
								.setVisible(true);
					} else {
						PanelAgregarCurso.this.getPanelMartes().setVisible(
								false);
					}
					Days.MARTES.addDias();
				}
			});
		}
		return btnMartes;
	}

	/**
	 * This method initializes btnMiercoles
	 * 
	 * @return javax.swing.JToggleButton
	 */
	private JToggleButton getBtnMiercoles() {
		if (btnMiercoles == null) {
			btnMiercoles = new JToggleButton();
			btnMiercoles.setBounds(new Rectangle(9, 93, 98, 29));
			btnMiercoles.setText("Miercoles");
			btnMiercoles.addItemListener(new java.awt.event.ItemListener() {
				public void itemStateChanged(java.awt.event.ItemEvent e) {
					if (btnMiercoles.isSelected()) {
						PanelAgregarCurso.this.getPanelMiercoles().setVisible(
								true);
					} else {
						PanelAgregarCurso.this.getPanelMiercoles().setVisible(
								true);
					}
					Days.MIERCOLES.addDias();
				}
			});
		}
		return btnMiercoles;
	}

	/**
	 * This method initializes btnJueves
	 * 
	 * @return javax.swing.JToggleButton
	 */
	private JToggleButton getBtnJueves() {
		if (btnJueves == null) {
			btnJueves = new JToggleButton();
			btnJueves.setBounds(new Rectangle(9, 126, 98, 29));
			btnJueves.setText("Jueves");
			btnJueves.addItemListener(new java.awt.event.ItemListener() {
				public void itemStateChanged(java.awt.event.ItemEvent e) {
					if (btnJueves.isSelected()) {
						PanelAgregarCurso.this.getPanelJueves()
								.setVisible(true);
					} else {
						PanelAgregarCurso.this.getPanelJueves().setVisible(
								false);
					}
					Days.JUEVES.addDias();
				}
			});
		}
		return btnJueves;
	}

	/**
	 * This method initializes btnViernes
	 * 
	 * @return javax.swing.JToggleButton
	 */
	private JToggleButton getBtnViernes() {
		if (btnViernes == null) {
			btnViernes = new JToggleButton();
			btnViernes.setBounds(new Rectangle(9, 159, 98, 29));
			btnViernes.setText("Viernes");
			btnViernes.addItemListener(new java.awt.event.ItemListener() {
				public void itemStateChanged(java.awt.event.ItemEvent e) {
					if (btnViernes.isSelected()) {
						PanelAgregarCurso.this.getPanelViernes().setVisible(
								true);
					} else {
						PanelAgregarCurso.this.getPanelViernes().setVisible(
								false);
					}
					Days.VIERNES.addDias();
				}
			});
		}
		return btnViernes;
	}

	/**
	 * This method initializes btnSabado
	 * 
	 * @return javax.swing.JToggleButton
	 */
	private JToggleButton getBtnSabado() {
		if (btnSabado == null) {
			btnSabado = new JToggleButton();
			btnSabado.setBounds(new Rectangle(9, 192, 98, 29));
			btnSabado.setText("Sabado");
			btnSabado.addItemListener(new java.awt.event.ItemListener() {
				public void itemStateChanged(java.awt.event.ItemEvent e) {
					if (btnSabado.isSelected()) {
						PanelAgregarCurso.this.getPanelSabado()
								.setVisible(true);
					} else {
						PanelAgregarCurso.this.getPanelSabado().setVisible(
								false);
					}
					Days.SABADO.addDias();
				}
			});
		}
		return btnSabado;
	}

	/**
	 * This method initializes btnDomingo
	 * 
	 * @return javax.swing.JToggleButton
	 */
	private JToggleButton getBtnDomingo() {
		if (btnDomingo == null) {
			btnDomingo = new JToggleButton();
			btnDomingo.setBounds(new Rectangle(9, 225, 98, 29));
			btnDomingo.setText("Domingo");
			btnDomingo.addItemListener(new java.awt.event.ItemListener() {
				public void itemStateChanged(java.awt.event.ItemEvent e) {
					if (btnDomingo.isSelected()) {
						PanelAgregarCurso.this.getPanelDomingo().setVisible(
								true);
					} else {
						PanelAgregarCurso.this.getPanelDomingo().setVisible(
								false);
					}
					Days.DOMINGO.addDias();
				}
			});
		}
		return btnDomingo;
	}

	/**
	 * This method initializes panelLunes
	 * 
	 * @return javax.swing.JPanel
	 */
	private JPanel getPanelLunes() {
		if (panelLunes == null) {
			panelLunes = new JPanel();
			panelLunes.setLayout(null);
			panelLunes.setBounds(new Rectangle(164, 27, 239, 29));
			panelLunes.add(getDateInicioLunes(), null);
			panelLunes.add(getDateFinLunes(), null);
			panelLunes.setVisible(false);
		}
		return panelLunes;
	}

	/**
	 * This method initializes dateInicioLunes
	 * 
	 * @return com.toedter.calendar.JDateChooser
	 */
	private JSpinner getDateInicioLunes() {
		if (dateInicioLunes == null) {
			new SpinnerDateModel();
			Date date = calInicio.getTime();
			dateInicioLunes = new JSpinner(new SpinnerDateModel(date, null,
					null, Calendar.AM));
			dateInicioLunes.setBounds(new Rectangle(3, 2, 109, 24));
			JSpinner.DateEditor de = new JSpinner.DateEditor(dateInicioLunes,
					"hh:mm a");
			dateInicioLunes.setEditor(de);

		}
		return dateInicioLunes;
	}

	/**
	 * This method initializes dateFinLunes
	 * 
	 * @return com.toedter.calendar.JDateChooser
	 */
	private JSpinner getDateFinLunes() {
		if (dateFinLunes == null) {
			Date date = calFin.getTime();
			dateFinLunes = new JSpinner(new SpinnerDateModel(date, null, null,
					Calendar.AM));
			dateFinLunes.setBounds(new Rectangle(124, 2, 109, 24));
			JSpinner.DateEditor de = new JSpinner.DateEditor(dateFinLunes,
					"hh:mm a");
			dateFinLunes.setEditor(de);
		}
		return dateFinLunes;
	}

	/**
	 * This method initializes panelMartes
	 * 
	 * @return javax.swing.JPanel
	 */
	private JPanel getPanelMartes() {
		if (panelMartes == null) {
			panelMartes = new JPanel();
			panelMartes.setLayout(null);
			panelMartes.setBounds(new Rectangle(164, 60, 239, 29));
			panelMartes.add(getDateInicioMartes(), null);
			panelMartes.add(getDateFinMartes(), null);
			panelMartes.setVisible(false);
		}
		return panelMartes;
	}

	/**
	 * This method initializes dateInicioMartes
	 * 
	 * @return com.toedter.calendar.JDateChooser
	 */
	private JSpinner getDateInicioMartes() {
		if (dateInicioMartes == null) {
			Date date = calInicio.getTime();
			dateInicioMartes = new JSpinner(new SpinnerDateModel(date, null,
					null, Calendar.AM));
			dateInicioMartes.setBounds(new Rectangle(3, 2, 109, 24));
			JSpinner.DateEditor de = new JSpinner.DateEditor(dateInicioMartes,
					"hh:mm a");
			dateInicioMartes.setEditor(de);
		}
		return dateInicioMartes;
	}

	/**
	 * This method initializes dateFinMartes
	 * 
	 * @return com.toedter.calendar.JDateChooser
	 */
	private JSpinner getDateFinMartes() {
		if (dateFinMartes == null) {
			Date date = calFin.getTime();
			dateFinMartes = new JSpinner(new SpinnerDateModel(date, null, null,
					Calendar.AM));
			dateFinMartes.setBounds(new Rectangle(124, 2, 109, 24));
			JSpinner.DateEditor de = new JSpinner.DateEditor(dateFinMartes,
					"hh:mm a");
			dateFinMartes.setEditor(de);
		}
		return dateFinMartes;
	}

	/**
	 * This method initializes panelMiercoles
	 * 
	 * @return javax.swing.JPanel
	 */
	private JPanel getPanelMiercoles() {
		if (panelMiercoles == null) {
			panelMiercoles = new JPanel();
			panelMiercoles.setLayout(null);
			panelMiercoles.setBounds(new Rectangle(164, 93, 239, 29));
			panelMiercoles.add(getDateInicioMiercoles(), null);
			panelMiercoles.add(getDateFinMiercoles(), null);
			panelMiercoles.setVisible(false);
		}
		return panelMiercoles;
	}

	/**
	 * This method initializes dateInicioMiercoles
	 * 
	 * @return com.toedter.calendar.JDateChooser
	 */
	private JSpinner getDateInicioMiercoles() {
		if (dateInicioMiercoles == null) {
			Date date = calInicio.getTime();
			dateInicioMiercoles = new JSpinner(new SpinnerDateModel(date, null,
					null, Calendar.AM));
			dateInicioMiercoles.setBounds(new Rectangle(3, 2, 109, 24));
			JSpinner.DateEditor de = new JSpinner.DateEditor(
					dateInicioMiercoles, "hh:mm a");
			dateInicioMiercoles.setEditor(de);
		}
		return dateInicioMiercoles;
	}

	/**
	 * This method initializes dateFinMiercoles
	 * 
	 * @return com.toedter.calendar.JDateChooser
	 */
	private JSpinner getDateFinMiercoles() {
		if (dateFinMiercoles == null) {
			Date date = calFin.getTime();
			dateFinMiercoles = new JSpinner(new SpinnerDateModel(date, null,
					null, Calendar.AM));
			dateFinMiercoles.setBounds(new Rectangle(124, 2, 109, 24));
			JSpinner.DateEditor de = new JSpinner.DateEditor(dateFinMiercoles,
					"hh:mm a");
			dateFinMiercoles.setEditor(de);
		}
		return dateFinMiercoles;
	}

	/**
	 * This method initializes panelJueves
	 * 
	 * @return javax.swing.JPanel
	 */
	private JPanel getPanelJueves() {
		if (panelJueves == null) {
			panelJueves = new JPanel();
			panelJueves.setLayout(null);
			panelJueves.setBounds(new Rectangle(164, 126, 239, 29));
			panelJueves.add(getDateInicioJueves(), null);
			panelJueves.add(getDateFinJueves(), null);
			panelJueves.setVisible(false);
		}
		return panelJueves;
	}

	/**
	 * This method initializes dateInicioJueves
	 * 
	 * @return com.toedter.calendar.JDateChooser
	 */
	private JSpinner getDateInicioJueves() {
		if (dateInicioJueves == null) {
			Date date = calInicio.getTime();
			dateInicioJueves = new JSpinner(new SpinnerDateModel(date, null,
					null, Calendar.AM));
			dateInicioJueves.setBounds(new Rectangle(3, 2, 109, 24));
			JSpinner.DateEditor de = new JSpinner.DateEditor(dateInicioJueves,
					"hh:mm a");
			dateInicioJueves.setEditor(de);
		}
		return dateInicioJueves;
	}

	/**
	 * This method initializes dateFinJueves
	 * 
	 * @return com.toedter.calendar.JDateChooser
	 */
	private JSpinner getDateFinJueves() {
		if (dateFinJueves == null) {
			Date date = calFin.getTime();
			dateFinJueves = new JSpinner(new SpinnerDateModel(date, null, null,
					Calendar.AM));
			dateFinJueves.setBounds(new Rectangle(124, 2, 109, 24));
			JSpinner.DateEditor de = new JSpinner.DateEditor(dateFinJueves,
					"hh:mm a");
			dateFinJueves.setEditor(de);
		}
		return dateFinJueves;
	}

	/**
	 * This method initializes panelViernes
	 * 
	 * @return javax.swing.JPanel
	 */
	private JPanel getPanelViernes() {
		if (panelViernes == null) {
			panelViernes = new JPanel();
			panelViernes.setLayout(null);
			panelViernes.setBounds(new Rectangle(164, 159, 239, 29));
			panelViernes.add(getDateInicioViernes(), null);
			panelViernes.add(getDateFinViernes(), null);
			panelViernes.setVisible(false);
		}
		return panelViernes;
	}

	/**
	 * This method initializes dateInicioViernes
	 * 
	 * @return com.toedter.calendar.JDateChooser
	 */
	private JSpinner getDateInicioViernes() {
		if (dateInicioViernes == null) {
			Date date = calInicio.getTime();
			dateInicioViernes = new JSpinner(new SpinnerDateModel(date, null,
					null, Calendar.AM));
			dateInicioViernes.setBounds(new Rectangle(3, 2, 109, 24));
			JSpinner.DateEditor de = new JSpinner.DateEditor(dateInicioViernes,
					"hh:mm a");
			dateInicioViernes.setEditor(de);
		}
		return dateInicioViernes;
	}

	/**
	 * This method initializes dateFinViernes
	 * 
	 * @return com.toedter.calendar.JDateChooser
	 */
	private JSpinner getDateFinViernes() {
		if (dateFinViernes == null) {
			Date date = calFin.getTime();
			dateFinViernes = new JSpinner(new SpinnerDateModel(date, null,
					null, Calendar.AM));
			dateFinViernes.setBounds(new Rectangle(124, 2, 109, 24));
			JSpinner.DateEditor de = new JSpinner.DateEditor(dateFinViernes,
					"hh:mm a");
			dateFinViernes.setEditor(de);
		}
		return dateFinViernes;
	}

	/**
	 * This method initializes panelSabado
	 * 
	 * @return javax.swing.JPanel
	 */
	private JPanel getPanelSabado() {
		if (panelSabado == null) {
			panelSabado = new JPanel();
			panelSabado.setLayout(null);
			panelSabado.setBounds(new Rectangle(164, 192, 239, 29));
			panelSabado.add(getDateInicioSabado(), null);
			panelSabado.add(getDateFinSabado(), null);
			panelSabado.setVisible(false);
		}
		return panelSabado;
	}

	/**
	 * This method initializes dateInicioSabado
	 * 
	 * @return com.toedter.calendar.JDateChooser
	 */
	private JSpinner getDateInicioSabado() {
		if (dateInicioSabado == null) {
			Date date = calInicio.getTime();
			dateInicioSabado = new JSpinner(new SpinnerDateModel(date, null,
					null, Calendar.AM));
			dateInicioSabado.setBounds(new Rectangle(3, 2, 109, 24));
			JSpinner.DateEditor de = new JSpinner.DateEditor(dateInicioSabado,
					"hh:mm a");
			dateInicioSabado.setEditor(de);
		}
		return dateInicioSabado;
	}

	/**
	 * This method initializes dateFinSabado
	 * 
	 * @return com.toedter.calendar.JDateChooser
	 */
	private JSpinner getDateFinSabado() {
		if (dateFinSabado == null) {
			Date date = calFin.getTime();
			dateFinSabado = new JSpinner(new SpinnerDateModel(date, null, null,
					Calendar.AM));
			dateFinSabado.setBounds(new Rectangle(124, 2, 109, 24));
			JSpinner.DateEditor de = new JSpinner.DateEditor(dateFinSabado,
					"hh:mm a");
			dateFinSabado.setEditor(de);
		}
		return dateFinSabado;
	}

	/**
	 * This method initializes panelDomingo
	 * 
	 * @return javax.swing.JPanel
	 */
	private JPanel getPanelDomingo() {
		if (panelDomingo == null) {
			panelDomingo = new JPanel();
			panelDomingo.setLayout(null);
			panelDomingo.setBounds(new Rectangle(164, 225, 239, 29));
			panelDomingo.add(getDateInicioDomingo(), null);
			panelDomingo.add(getDateFinDomingo(), null);
			panelDomingo.setVisible(false);
		}
		return panelDomingo;
	}

	/**
	 * This method initializes dateInicioDomingo
	 * 
	 * @return com.toedter.calendar.JDateChooser
	 */
	private JSpinner getDateInicioDomingo() {
		if (dateInicioDomingo == null) {
			Date date = calInicio.getTime();
			dateInicioDomingo = new JSpinner(new SpinnerDateModel(date, null,
					null, Calendar.AM));
			dateInicioDomingo.setBounds(new Rectangle(3, 2, 109, 24));
			JSpinner.DateEditor de = new JSpinner.DateEditor(dateInicioDomingo,
					"hh:mm a");
			dateInicioDomingo.setEditor(de);

		}
		return dateInicioDomingo;
	}

	/**
	 * This method initializes dateFinDomingo
	 * 
	 * @return com.toedter.calendar.JDateChooser
	 */
	private JSpinner getDateFinDomingo() {
		if (dateFinDomingo == null) {
			Date date = calFin.getTime();
			dateFinDomingo = new JSpinner(new SpinnerDateModel(date, null,
					null, Calendar.AM));
			dateFinDomingo.setBounds(new Rectangle(124, 2, 109, 24));
			JSpinner.DateEditor de = new JSpinner.DateEditor(dateFinDomingo,
					"hh:mm a");
			dateFinDomingo.setEditor(de);
		}
		return dateFinDomingo;
	}

	/**
	 * This method initializes btnAgregarProfesor
	 * 
	 * @return javax.swing.JButton
	 */
	private JButton getBtnAgregarProfesor() {
		if (btnAgregarProfesor == null) {
			btnAgregarProfesor = new JButton();
			btnAgregarProfesor.setBounds(new Rectangle(386, 166, 101, 23));
			btnAgregarProfesor.setText("Agregar");
			btnAgregarProfesor.setIcon(new ImageIcon("./lib/images/add.png"));
			btnAgregarProfesor
					.addActionListener(new java.awt.event.ActionListener() {
						public void actionPerformed(java.awt.event.ActionEvent e) {
							DialogoAgregarEmpleado dialogo = DialogoAgregarEmpleado
									.getInstancia();
							dialogo.setVisible(true);
						}
					});
		}
		return btnAgregarProfesor;
	}

	/**
	 * This method initializes txtNombreCiclo
	 * 
	 * @return javax.swing.JTextField
	 */
	private JTextField getTxtNombreCiclo() {
		if (txtNombreCiclo == null) {
			txtNombreCiclo = new JTextField();
			txtNombreCiclo.setBounds(new Rectangle(103, 204, 171, 23));
			txtNombreCiclo.setEnabled(false);
		}
		return txtNombreCiclo;
	}

	/**
	 * This method initializes btnCiclo
	 * 
	 * @return javax.swing.JButton
	 */
	private JButton getBtnCiclo() {
		if (btnCiclo == null) {
			btnCiclo = new JButton();
			btnCiclo.setBounds(new Rectangle(282, 204, 96, 23));
			btnCiclo.setText("Buscar");
			btnCiclo.addActionListener(new java.awt.event.ActionListener() {
				public void actionPerformed(java.awt.event.ActionEvent e) {
					DialogoCiclos dialogoCiclo = DialogoCiclos.getInstancia();
					ModeloCiclo modeloCiclo = ModeloCiclo.getInstancia();
					modeloCiclo.actualizarTabla();
					DialogoCiclos.setAccion("Agregar");
					dialogoCiclo.setVisible(true);
					dialogoCiclo = null;
					modeloCiclo = null;
				}
			});
		}
		return btnCiclo;
	}

	public static int getIdCiclo() {
		return idCiclo;
	}

	public static void setIdCiclo(int idCiclo) {
		PanelAgregarCurso.idCiclo = idCiclo;
	}

	/**
	 * This method initializes txtAula
	 * 
	 * @return javax.swing.JTextField
	 */
	private JTextField getTxtAula() {
		if (txtAula == null) {
			txtAula = new JTextField();
			txtAula.setBounds(new Rectangle(103, 245, 171, 23));
			txtAula.setEnabled(false);
		}
		return txtAula;
	}

	/**
	 * This method initializes btnAula
	 * 
	 * @return javax.swing.JButton
	 */
	private JButton getBtnAula() {
		if (btnAula == null) {
			btnAula = new JButton();
			btnAula.setBounds(new Rectangle(282, 245, 96, 24));
			btnAula.setText("Buscar");
			btnAula.addActionListener(new java.awt.event.ActionListener() {
				public void actionPerformed(java.awt.event.ActionEvent e) {
					DialogoAula dialogoAula = DialogoAula.getInstancia();
					ModeloAula modeloAula = ModeloAula.getInstancia();
					modeloAula.actualizarTabla();
					DialogoAula.setAccion("Agregar");
					dialogoAula.setVisible(true);
					dialogoAula = null;
					modeloAula = null;
				}
			});
		}
		return btnAula;
	}

	/**
	 * This method initializes btnAgregarCiclo
	 * 
	 * @return javax.swing.JButton
	 */
	private JButton getBtnAgregarCiclo() {
		if (btnAgregarCiclo == null) {
			btnAgregarCiclo = new JButton();
			btnAgregarCiclo.setBounds(new Rectangle(386, 204, 101, 23));
			btnAgregarCiclo.setText("Agregar");
			btnAgregarCiclo
					.addActionListener(new java.awt.event.ActionListener() {
						public void actionPerformed(java.awt.event.ActionEvent e) {
							DialogoAgregarCiclo dialogo = DialogoAgregarCiclo
									.getInstancia();
							dialogo.setVisible(true);
						}
					});
			btnAgregarCiclo.setIcon(new ImageIcon("./lib/images/add.png"));
		}
		return btnAgregarCiclo;
	}

	/**
	 * This method initializes btnAgregarAula
	 * 
	 * @return javax.swing.JButton
	 */
	private JButton getBtnAgregarAula() {
		if (btnAgregarAula == null) {
			btnAgregarAula = new JButton();
			btnAgregarAula.setBounds(new Rectangle(386, 245, 101, 23));
			btnAgregarAula.setText("Agregar");
			btnAgregarAula.setIcon(new ImageIcon("./lib/images/add.png"));
			btnAgregarAula
					.addActionListener(new java.awt.event.ActionListener() {
						public void actionPerformed(java.awt.event.ActionEvent e) {
							DialogoAgregarAula dialogo = new DialogoAgregarAula(
									null);
							dialogo.setVisible(true);
							dialogo = null;
						}
					});
		}
		return btnAgregarAula;
	}

	public static int getIdAula() {
		return idAula;
	}

	public static void setIdAula(int idAula) {
		PanelAgregarCurso.idAula = idAula;
	}

	/**
	 * This is the default constructor
	 */

	/**
	 * This method initializes this
	 * 
	 * @return void
	 */

} // @jve:decl-index=0:visual-constraint="10,10"
